#ifndef __OgreURL_Prerequisites_H__
#define __OgreURL_Prerequisites_H__
#pragma once

// Include custom config
#include "OgreURLConfig.h"

// Include OGRE headers
#include <OgrePrerequisites.h>

namespace Ogre
{

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#	ifdef OGREURL_STATIC_LIB
#		define _OgreURLExport
#		define _OgreURLPrivate
#	elif defined( OgreURL_EXPORTS )
#		define _OgreURLExport __declspec(dllexport)
#	else
#		if OGRE_COMPILER == OGRE_COMPILER_GNUC
#			define _OgreURLExport
#		else
#			define _OgreURLExport __declspec(dllimport)
#		endif // end of #if OGRE_COMPILER == OGRE_COMPILER_GNUC
#	endif // end of #ifdef OgreURL_EXPORTS
#	define _OgreURLPrivate
#elif OGRE_PLATFORM == OGRE_PLATFORM_LINUX || OGRE_PLATFORM == OGRE_PLATFORM_APPLE || \
	OGRE_PLATFORM == OGRE_PLATFORM_IPHONE || OGRE_PLATFORM == OGRE_PLATFORM_SYMBIAN
#	if OGRE_COMP_VER >= 400
#		define _OgreURLExport __attribute__ ((visibility("default")))
#		define _OgreURLPrivate __attribute__ ((visibility("hidden")))
#	else
#		define _OgreURLExport
#		define _OgreURLPrivate
#	endif // end of #if OGRE_COMP_VER >= 400
#else
#	pragma error "Unsupported platform. Abort."
#endif // end of #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32

	// Pre-declare classes
	// Allows use of pointers in header files without including individual .h
	// so decreases dependencies between files
	// exported classes
	class URLArchiveFactory;
	class URLArchive;
	class URLWriteDataStream;

} // end of namespace Ogre

#endif //include guard, end of #ifndef __OgreURL_Prerequisites_H__
